package br.com.sgmf.web.managedbean;

import br.com.sgmf.model.Marca;
import br.com.sgmf.service.MarcaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import java.util.List;

@Controller
@Scope("request")
public class MarcaBean {

    private static final String MARCA_CADASTRADA_COM_SUCESSO = "Marca cadastrada com sucesso!";
    private static final String MARCA_EDITADA_COM_SUCESSO = "Marca editada com sucesso!";
    private static final String MARCA_EXCLUIDA_COM_SUCESSO = "Marca excluída com sucesso!";

    private Marca marca;
    private List<Marca> marcas;

    @Autowired
    private MarcaService marcaService;

    @PostConstruct
    public void init() {
        marca = new Marca();
        marcas = marcaService.findAll();
    }

    public String salvar() {
        FacesMessage message;

        if (marca.getId() == null) {
            marcaService.save(marca);
            message = new FacesMessage(FacesMessage.SEVERITY_INFO, MARCA_CADASTRADA_COM_SUCESSO, null);
        } else {
            marcaService.update(marca);
            message = new FacesMessage(FacesMessage.SEVERITY_INFO, MARCA_EDITADA_COM_SUCESSO, null);
        }

        marca = new Marca();

        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, message);

        return null;
    }

    public String editar(Marca marca) {
        this.marca = marca;
        return null;
    }

    public String excluir(Marca marca) {
        marcaService.delete(marca);

        marca = new Marca();

        FacesContext context = FacesContext.getCurrentInstance();
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, MARCA_EXCLUIDA_COM_SUCESSO, null);
        context.addMessage(null, message);

        return null;
    }

    public Marca getMarca() {
        return marca;
    }

    public void setMarca(Marca marca) {
        this.marca = marca;
    }

    public List<Marca> getMarcas() {
        return marcas;
    }

    public void setMarcas(List<Marca> marcas) {
        this.marcas = marcas;
    }

}
